function setup()
% SETUP 设置矩阵计算项目环境
% 
% 这个脚本会将所有必要的路径添加到MATLAB路径中

fprintf('=== 矩阵计算项目环境设置 ===\n\n');

% 获取当前目录
project_root = pwd;
fprintf('项目根目录: %s\n', project_root);

% 需要添加的路径
paths_to_add = {
    '01-introduction',
    '02-linear-systems-lu', 
    '03-least-squares-qr',
    '04-eigenvalues',
    '05-positive-semidefinite',
    '06-svd',
    'experiments/exp1-lu',
    'experiments/exp2-qr',
    'experiments/exp3-eigenvalues',
    'experiments/exp4-svd',
    'utils',
    'docs'
};

fprintf('\n正在添加路径...\n');
for i = 1:length(paths_to_add)
    full_path = fullfile(project_root, paths_to_add{i});
    if exist(full_path, 'dir')
        addpath(full_path);
        fprintf('✓ 已添加: %s\n', paths_to_add{i});
    else
        fprintf('✗ 路径不存在: %s\n', paths_to_add{i});
    end
end

% 保存路径设置
fprintf('\n正在保存路径设置...\n');
try
    savepath;
    fprintf('✓ 路径设置已保存\n');
catch
    fprintf('⚠ 无法保存路径设置，请手动运行 savepath 命令\n');
end

fprintf('\n=== 环境设置完成 ===\n');
fprintf('现在您可以运行以下命令:\n');
fprintf('• run_all_demos - 运行所有演示\n');
fprintf('• 直接调用各章节的函数\n');
fprintf('• 运行实验脚本\n\n');

% 显示项目结构
fprintf('项目结构:\n');
display_project_structure();

end

function display_project_structure()
fprintf('matrix-computations/\n');
fprintf('├── README.md                    # 项目说明\n');
fprintf('├── LICENSE                      # 许可证\n');
fprintf('├── setup.m                      # 环境设置脚本\n');
fprintf('├── run_all_demos.m              # 主演示脚本\n');
fprintf('├── 01-introduction/             # 第1章：导引\n');
fprintf('├── 02-linear-systems-lu/        # 第2章：线性系统和LU分解\n');
fprintf('├── 03-least-squares-qr/         # 第3章：最小二乘和QR分解\n');
fprintf('├── 04-eigenvalues/              # 第4章：特征值和特征向量\n');
fprintf('├── 05-positive-semidefinite/    # 第5章：正定和半正定矩阵\n');
fprintf('├── 06-svd/                      # 第6章：奇异值分解\n');
fprintf('├── experiments/                 # 实验代码\n');
fprintf('│   ├── exp1-lu/                 # LU分解实验\n');
fprintf('│   ├── exp2-qr/                 # QR分解实验\n');
fprintf('│   ├── exp3-eigenvalues/        # 特征值实验\n');
fprintf('│   └── exp4-svd/                # SVD应用实验\n');
fprintf('├── utils/                       # 工具函数\n');
fprintf('└── docs/                        # 文档\n');
fprintf('    └── course_summary.md        # 课程总结\n');
end